package geometrie;

public class Quader extends Figur3D
{

    private int hoehe;

    public int getHoehe()
    {
        return hoehe;
    }

    public void setHoehe(int hoehe)
    {
        this.hoehe = hoehe < 1 ? 1 : hoehe;
    }

    public void setBoden(Figur2D boden)
    {
        if (boden != null)
        {
            super.setBoden(boden);
        }
        else
        {
            boden = new Rechteck(new Punkt(0, 0), 1, 1);
        }
    }

    public Quader(Rechteck r, int hoehe)
    {
        super(r);
        if (r == null)
        {
            setBoden(new Rechteck(new Punkt(0, 0), 1, 1));
        }
        this.hoehe = hoehe < 1 ? 1 : hoehe;
    }

    public Rechteck getBoden()
    {
        Figur2D myBoden = super.getBoden();
        return (Rechteck) myBoden;
    }

    public double laengeRaumdiagonale()
    {
        return Math.sqrt(Math.pow(getBoden().diagonalenLaenge(), 2) + Math.pow(hoehe, 2));
    }

    public static boolean istWuerfel(Object o)
    {
        if (o instanceof Quader)
        {
            if (((Quader) o).getBoden().getBreite() == ((Quader) o).getBoden().getLaenge() && ((Quader) o).getBoden().getLaenge() == ((Quader) o).getHoehe() && ((Quader) o).getBoden().getBreite() == ((Quader) o).getHoehe())
            {
                return true;
            }
        }
        return false;
    }

    @Override
    public double volumen()
    {
        return getBoden().flaeche() * hoehe;
    }

    @Override
    public double oberflaeche()
    {
        return getBoden().flaeche() * 2 + getBoden().umfang() * hoehe;
    }

}
